iT邦幫忙

2023 iThome 鐵人賽

DAY 6
0
AI & Data

AI白話文運動系列之「A!給我那張Image!」系列 第 6

番外篇—AI怎麼學?梯度下降法與反向傳播

  • 分享至 

  • xImage
  •  

前言

這篇的的內容主要是主要是延續梯度下降法的一些小討論,還不清楚梯度下降法的同學建議先去複習一下這篇的內容:https://ithelp.ithome.com.tw/articles/10318660

一、AI模型中的資訊流動--正向傳播與反向傳播

  • 在一個系統或模型中,正向的傳播方向指的是輸入到輸出的這個方向,與之相反的就是輸出到輸入的「反向」傳播。以AI模型來說,我們在正向傳播時所傳遞的資訊來自於輸入資料與模型參數的運算結果,而反向傳播時,我們傳遞的資訊則是來自於輸出結果與預期結果的差異,也就是所謂的「誤差」,所以我們可以把正向傳播視為輸入資訊的傳遞,而反向傳播則是「誤差傳遞」,正如下圖所示一樣。
  • https://ithelp.ithome.com.tw/upload/images/20230921/20163299o2IPEPWEKq.png

二、反向傳播的更新方式

  • 反向傳播的出發點是模型最後產生的誤差,不過這個誤差怎麼算出來的呢?還記得我們前段時間在討論的「損失函數」嗎?損失函數就是用來評估「誤差」的大小。
  • 在有了初始的誤差之後,我們由後往前看(由輸出往輸入的方向看),先看距離輸出最近的參數對誤差的影響有多大,影響越大的更新越多,影響越小的更新越少,這個步驟就是微分/梯度計算/求導數在處理的事,總之,經過運算之後我們會知道每個參數對「誤差」貢獻了多少,貢獻越大,需要更新的越多。
  • 最後一層的參數更新完了之後,我們以此類推,一路往前看到最靠近輸入的那一層,中間每一層的參數都會用同樣的方式更新(根據後面傳回來的誤差,考慮自己對其影響多大,應該更新多少)。
  • 這樣的過程聽起來是不是有點熟悉?因為在反向傳播的過程中,我們一邊傳遞誤差,一邊使用梯度下降法更新美個參數,這就是為甚麼梯度下降經常與反向傳播合在一起討論的原因。

三、總結

  • 通過今天的內容,我們可以更清楚AI模型的運算流程,並且對於反向傳播與梯度下降的關係有更明確的認知,這些內容雖然很簡單,不過實際應用起來卻是滿麻煩的(理論推導的話需要手動計算每一步驟的梯度更新公式),還好我們現在有許多好用的工具,前幾天介紹過的Pytorch便是其中一個,之後我們會利用MLP模型教大家如何利用Pytorch從頭開始建立一個完整的AI模型,讓大家從實際的範例中感受這些概念具體是怎麼運作的。

上一篇
現代問題就要用現代方法來處理--AI中的線性代數(以MLP為例)
下一篇
Pytorch實戰(一)--準備資料集(Dataset, DataLoader, transforms...)
系列文
AI白話文運動系列之「A!給我那張Image!」30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言